<?php
/*
*--------------------------------------------------------------
* 分页类
*--------------------------------------------------------------
* 最后修改时间 2011-4-13 Leon
* @version 1.0
* @author Leon(tmkook@gmail.com)
* @date 2010-2-27
*--------------------------------------------------------------
*/
class page{

    protected $_page,$_size,$_show,$_first,$_last;

    //构造函数
    function __construct(){
        $this->_size  = 10;  //每页显示页数
        $this->_first = 1;   //首页
        $this->_back  = array(); //往前的页码
        $this->_show  = 1;   //当前页
        $this->_going = array(); //往后的页码
        $this->_last  = 1;   //尾页
        $this->_total = 0;   //总条数
    }

    /**
    * 分页初始化
    *
    * @parame total 总条数
    * @parame size 每页显示条数
    * @parame key 分页索引名
    *
    */
    function init($total,$size=10,$key='page'){
		$this->_key = $key;
        $this->_total = $total;
        $this->_size = $size;
        $this->_last = ceil($this->_total / $this->_size);
		if(!isset($_GET[$key]) || $_GET[$key] <= 0){
			 $this->_show = 1;
		}else{
			$this->_show = $_GET[$key];
		}
		//如果当前页大于尾页则当前重置为尾页
		if($this->_show > $this->_last) $this->_show = $this->_last;
		$sizea = $sizeb = ceil($this->_size / 2);
        $showa = $showb = $this->_show;
		//如果当前页大于显示页数的一半则显示首页
        if($showa > $sizea) $this->_first = 1;
        //开始计算往后退的页码
		while($sizea--){
            if(1 < $showa--){
                $this->_back[] = $showa;
            }
        }
        $this->_back = array_reverse($this->_back);
        $sizeb += ($sizeb-count($this->_back));
		//开始计算往前进的页码
        while($sizeb--){
            if($this->_last > $showb++){
                $this->_going[] = $showb;
            }
        }
    }

	//获取第一页
    function getFirst(){
        return $this->_first;
    }

	//获取最后一页
    function getLast(){
		if($this->_show == $this->_last){
        	return 0;
		}
		return $this->_last;
    }

	//往前的页码
	function getFront(){
		return $this->_back;
	}

	//当前页
    function getShow(){
        return $this->_show;
    }

	//往后的页码
    function getGoing(){
        return $this->_going;
    }

	//获取每页显示条数
    function getSize(){
        return $this->_size;
    }

	//上一页
    function getBack(){
		$back = ($this->_show -1);
        if($back > 0){
			return $back;
		}
		return 1;
    }

	//下一页
	function getNext(){
		$next = ($this->_show +1);
        if($next <= $this->_last){
			return $next;
		}
		return $this->_last;
	}

}